<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html> <head>
<title>School of Expression example code</title>
</head>

<body>
<h1>School of Expression example code</h1>

This page contains the accompanying software to the <a
href="http://haskell.org/soe">School of Expression</a> textbook by
Paul Hudak. Here's the complete list of the code in the order of
chapters:
<p>
<ol>
<li><a href="../txt/Intro.txt">Problem Solving, Programming, and Calculation</a>
<li><a href="Shape.lhs">A Module of Shapes: Part I</a>
<li><a href="SimpleGraphics.lhs">Simple Graphics</a> (<a
href="Snowflake.lhs">Snowflake</a>)
<li><a href="Draw.lhs">Shapes II: Drawing Shapes</a>
<li><a href="../txt/Poly.txt">Polymorphic and Higher-Order Functions</a>
<li><a href="../txt/Perimeter.txt">Shapes III: Perimeters of Shapes</a>
<li><a href="Trees.lhs">Trees</a>
<li><a href="Region.lhs">A Module of Regions</a>
<li><a href="../txt/Hof.txt">More About Higher-Order Functions</a>
<li><a href="Picture.lhs">Drawing Regions</a>
<li><a href="../txt/Induction.txt">Proof by Induction</a>
<li><a href="../txt/Qualified-types.txt">Qualified Types</a>
<li><a href="Animation.lhs">A Module of Simple Animations</a>
<li><a href="Streams.lhs">Programming With Streams</a> (<a href="Memo.lhs">Memoization</a>)
<li><a href="Fal.lhs">A Module of Reactive Animations</a>
<li><a href="../txt/IOProc.txt">Communicating With the Outside World</a>
<li><a href="Reactimate.lhs">Rendering Reactive Animations</a>
<li><a href="../txt/Monads.txt">Higher-Order Types</a>
<li><a href="Robot.lhs">An Imperative Robot Language</a>
<li><a href="Music.lhs">Functional Music Composition</a>
<li><a href="Perform.lhs">Interpreting Functional Music</a>
<li><a href="MDL.lhs">From Performance to MIDI</a>
<li><a href="../txt/List-tour.txt">A Tour of the PreludeList Module</a>
<li><a href="../txt/Class-tour.txt">A Tour of Haskell's Standard Type Classes</a>
<li>Appendix A. <a href="../txt/Bitans.txt">Built-in Types Are Not Special</a>
<li>Appendix B. <a href="../txt/Patterns.txt">Pattern-Matching Details</a>
<p>
</ol>
Some chapters contain incomplete code fragments and are not meant to
be loaded by GHCi.  These are provided as .txt files.  

<p> The remaining files are Haskell literate source code (.lhs).  You
may load them into the latest version of
<a href="http://haskell.org/ghc">GHCi</a> (version 6.6).
Double-click should do the loading automatically on Windows machines,
otherwise you may navigate down to the directory of this document and then
open the Haskell modules from there.
</p>
<h3>Update Notice (Aug 2007):</h3>
<ul>
<li>All code should now work with latest GHC 6.6.1 or later with OpenGL and 
    <a href="http://www.haskell.org/soe/glfw.html">GLFW package</a>
    for Haskell, which must be installed prior to running SOE.
</li>
<li>For MacOS X, you'll have to use the EnableGUI trick (from
    <a href="http://wxhaskell.sourceforge.net/building-macosx.html">
    wxHaskell MacOS X guide</a>) for GHCi. It's included
    here in the source. First you need to compile EnableGUI.hs
    to binary:
<pre>
ghc -c EnableGUI.hs 
</pre>
    Then you can run GHCi like this
<pre>
ghci Draw.lhs EnableGUI
*Draw> :m +EnableGUI
*Draw EnableGUI> enableGUI >> main
</pre>
    Otherwise GHCi will not be able to fully activate the Graphics
    Window. Compiling programs with GHC has no problem and doesn't
    need this trick.
</li>
</ul>
</body>
</html>
